#ifndef __AXP2101_H__
#define __AXP2101_H__

#include "i2c_device.h"

/**
 * @brief AXP2101电源管理芯片驱动类
 * 
 * 提供电池状态查询和电源管理功能
 */
class Axp2101 : public I2cDevice {
public:
    /**
     * @brief 构造函数
     * 
     * @param i2c_bus I2C总线句柄
     * @param addr 设备I2C地址
     */
    Axp2101(i2c_master_bus_handle_t i2c_bus, uint8_t addr);
    
    /**
     * @brief 检查电池是否正在充电
     * 
     * @return bool 充电状态，true表示正在充电
     */
    bool IsCharging();
    
    /**
     * @brief 检查电池是否正在放电
     * 
     * @return bool 放电状态，true表示正在放电
     */
    bool IsDischarging();
    
    /**
     * @brief 检查电池是否充满
     * 
     * @return bool 充满状态，true表示电池已充满
     */
    bool IsChargingDone();
    
    /**
     * @brief 获取电池电量百分比
     * 
     * @return int 电池电量(0-100)
     */
    int GetBatteryLevel();
    
    /**
     * @brief 关闭设备电源
     */
    void PowerOff();

private:
    /**
     * @brief 获取电池电流方向
     * 
     * @return int 电流方向值
     */
    int GetBatteryCurrentDirection();
};

#endif
